# 字符串
# 一般使用引号（单引号、双引号和三引号都可以）来创建字符串
# 字符串是由一个一个的字符组成 ,注：字符串中可能包含一种特殊字符--转义符

var1 = 'hello world'
var2 = "python \t runoob"

# 可换行
var3 = '''dsaff
        dsfafds'''
var4 = """dfaaglkl
            kjfafksh"""
var5 = 'hello\nworld'

# 英语的上标符号 I'm Tom  使用转义字符
var6 = 'I\'m Tom'

var7 = '我是"河南"人'
var8 = '我是\"河南\"人'

# 下标
# “下标”又叫“索引”，就是编号。
# 下标的作用即是通过下标快速找到对应的数据
# 所有序列都有下标
# 注：从左到右，从0开始；反过来，从-1开始

print(var1[1])
print(var7[0])
print(var8[2])

# 切片
# 切片是指对操作的对象截取其中的一部分。
# 字符串、列表、元组都支持切片操作
#  序列对象[开始位置下标：结束位置下标：步长]
#  包头不包尾！

name = 'abcdefg'
print(name[2:5:1])  # cde
print(name[2:5])  # cde
print(name[:5])  # abcde
print(name[1:])  # bcdefg
print(name[:])  # abcdefg
print(name[::2])  # aceg
print(name[:-1])  # abcdef
print(name[-4:-1])  # def
print(name[::-1])  # gfedcba

# 字符串中的函数
ss = 'hellopythonworld'

# 1.字符串查找
# 默认从左到右查找（index、find）
# 也可以从右到左查找（rindex、rfind）

# 除了目标字符串之外，还可以做判断
print(ss.find('py'))
print(ss.find('hi'))  # -1  没有找到，即为-1.可以用来做判断
# print(ss.index('hi'))  # 如果没有找到，会报错

# 2.字符串大小写转换操作（upper lower swapcase capitalize title）
# upper 将字符串所有元素转为大写
# lower 将字符串所有元素转为小写
# swapcase 交换大小写，大写换位小写，小写换为大写
# capitalize 打一个元素大写，其余得小写
# title 每个单词的第一个字符大写，其余均为小写


# 3.字符串对齐（certer just zfill）

# 4.分割字符串（split splitlines partition）
# split(seq="",num=string.count(str))  以seq（默认空格）为分隔符截取字符串，如果num有指定值，则仅截取num+1个字符串（只需num个seq分隔符），得到新列表
# splitlines 按照行进行分割，得到新列表
# partition（str） 找到字符串中的第一个str，并以str为界，将字符串分割为3部分，返回一个新的元组

sss = 'I am a student'
print(sss.split(" "))  # ['I', 'am', 'a', 'student'] 分隔符不会在结果中出现
print(sss.partition(" "))  # ('I', ' ', 'am a student') 区分：分隔符单独一个区

# 5.合并与替换（join replace）
# join(seq) 以指定字符串作为分隔符，将seq中所有的元素（的字符串表示）合并为一个新的字符串 ,列表的方法
# replace(old,new[,max]) 把将字符串中的old替换为new，如果max指定，则替换不超过max次
print(sss.replace('student', 'worker'))  # I am a worker

# 6.判断字符串（isidentifier isspace isalpha isdecimal isnumeric isalnum等）

# 7.去除两端多余字符操作（strip）
# lstrip(str) 去掉左边的str字符（不是字符串），默认为空白字符
# rstrip(str) 去掉右边的str字符
# strip(str)  去掉左右两边的str字符
